package com.yanggu.scala.chapater13.curry

//函数柯里化
object CurryDemo01 {

  def main(args: Array[String]): Unit = {
    //函数编程中，接受多个参数的函数都可以转化为接受单个参数的函数，这个转化过程就叫柯里化
    //柯里化就是证明了函数只需要一个参数而已。其实我们刚才的学习过程中，已经涉及到了柯里化操作。
    //不用设立柯里化存在的意义这样的命题。柯里化就是以函数为主体这种思想发展的必然产生的结果。(即：柯里化是面向函数思想的必
    //编写一个函数，接收两个整数，可以返回两个数的和，要求:
    //使用常规的方式完成
    def sum(num1: Int, num2: Int) = num1 + num2

    println(sum(1, 2))

    //使用闭包的方式完成
    def sum2(num1: Int) = (num2: Int) => num1 + num2

    println(sum2(1)(2))

    def sum3(num1: Int)(num2: Int) = num1 + num2

    println(sum3(1)(2))
    //使用函数柯里化完成
  }

}
